<?php

require_once 'classDb.php';

class Usuario {

    public $db;
    public $USU_ID;
    public $EMP_ID;
    public $USU_USUARIO;
    public $USU_PASSWORD;
    public $USU_RUT;
    public $USU_DV;
    public $USU_NOMBRES;
    public $USU_AP_PATERNO;
    public $USU_AP_MATERNO;
    public $USU_REGION;
    public $USU_PROVINCIA;
    public $USU_COMUNA;
    public $USU_DIRECCION;
    public $USU_TELEFONO;
    public $USU_EMAIL;
    public $USU_FECHA_CREACION;
    public $USU_FECHA_MODIFICACION;
    public $USU_ESTADO;

    /**
     * 19.12.2013
     * METODO QUE VALIDA SI EL USUARIO QUE QUIERE CONECTARSE AL
     * SISTEMA ES VALIDO, COMPARANDO LAS CREDENCIALES DE ACCESO
     * REGISTRADAS EN EL SISTEMA 
     * @param type $user
     * @param type $clave
     * @return $ID_USUARIO
     */
    function login($user, $clave) {

        $this->db = DB::getInstance();

        $this->USU_USUARIO = $user;
        $this->USU_CLAVE = md5($clave);

        $this->db->sql = "SELECT A.USU_ID, 
                        B.USU_ID 
                 FROM BOD_USUARIOS A INNER JOIN BOD_LOAD_USR_PERFIL B 
                    ON (A.USU_ID = B.USU_ID) 
                WHERE A.USU_USUARIO = '" . $this->USU_USUARIO . "' AND 
                        A.USU_PASSWORD = '" . $this->USU_CLAVE . "' AND
                        A.USU_ESTADO = 1";

        $result = $this->db->loadObject();

        return $result;
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA TODOS LOS DATOS DE USUARIO
     * ASOCIADOS A UN ID DE USUARIO REGISTRADO EN EL SISTEMA
     * @param type $id
     * @return DATOS
     */
    function loadById($id) {

        $this->db = DB::getInstance();
        $this->USU_ID = $id;

        $this->db->sql = "SELECT * FROM BOD_USUARIOS WHERE USU_ID = '" . $this->USU_ID . "'";

        $result = $this->db->loadObject();

        return $result;
    }

    function getRoles() {

        /*
          $this->db->binds = array(':c_usuario' => $this->c_usuario);
          $this->db->sql = "SELECT * FROM SIIS.ADMIN_ROL_USUARIO WHERE C_ROL = 99 AND C_USUARIO = :c_usuario ";
          $datos = $this->db->loadObjectList();
          $id_rol = array();

          foreach ($datos as $d) {
          array_push($id_rol, $d->ID_ROL);
          }

          $id_rol_aux = "";
          $aux = count($id_rol);
          $i = 0;

          while ($i < $aux) {
          if ($id_rol_aux != "")
          $id_rol_aux .= ",";
          $id_rol_aux .= $id_rol[$i];
          $i++;
          }
          return $id_rol_aux;
         * 
         */
    }

    //DACF - 05/10/2012
    //metodo que obtiene los reloes del usuario
    function obtenerRoles() {
        /*
          $resultado = array();
          $this->db->binds = array(':c_usuario' => $this->c_usuario);
          $this->db->sql = "SELECT R.C_ROL, R.N_ROL FROM SIIS.ADMIN_ROL_USUARIO UR, SIIS.ADMIN_TROLES R WHERE UR.C_ROL=R.C_ROL AND UR.C_USUARIO = :c_usuario ";
          $roles_aux = $this->db->loadObjectList();
          foreach ($roles_aux as $roles) {
          $resultado[$roles->C_ROL] = "$roles->N_ROL";
          }
          return $resultado;
         * 
         */
    }

    function listarRoles() {
        /*
          $resultado = array();
          $this->db->binds = array();
          $this->db->sql = "SELECT * FROM SIIS.ADMIN_TROLES";
          $roles_aux = $this->db->loadObjectList();
          foreach ($roles_aux as $roles) {
          $resultado[$roles->C_ROL] = "$roles->N_ROL";
          }
          return $resultado;
         * 
         */
    }

    /**
     * 02.01.2014
     * METODO QUE RETORNA EL LISTADO DE MENUS ASOCIADOS A ROL
     * DE USUARIO REGISTRADO EN EL SISTEMA
     * @param type $id_usr
     * @return $html
     */
    function getMenu($id_usr) {

        $this->db = DB::getInstance();
        $this->USU_ID = $id_usr;

        $this->db->sql = "SELECT A.FUN_ID, 
                         A.PER_ID, 
                         A.FUN_NOMBRE, 
                         A.FUN_URL, 
                         A.FUN_ESTADO 
                 FROM BOD_FUNCION A INNER JOIN BOD_LOAD_USR_PERFIL B 
                     ON (A.PER_ID = B.PER_ID) 
                 WHERE B.USU_ID =  '" . $this->USU_ID . "' AND FUN_ESTADO = 1";


        $result = $this->db->loadObject();

        if ($this->USU_ID > 0) {
            @$html .= "<div align='center'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src='../../views/layout/img/icons/User.gif' alt='Usuario' border='0'  align='absmiddle'/>&nbsp;" . $_SESSION['NOMBRE'] . "";
            @$html .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"../../views/layout/index.php\"><span><img src='../../views/layout/img/icons/Home.gif' alt='Inicio' border='0' align='absmiddle'/> Inicio</span></a>";
            @$html .= "&nbsp;&nbsp;&nbsp;<a href=\"../../views/usuarios/login.php\"><span><img src='../../views/layout/img/icons/Standby.gif' alt='Cerrar Sesi&oacute;n' border='0' align='absmiddle'/> Cerrar Sesi&oacute;n</span></a></div>";
            @$html .= "<div align='left'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=" . $result->FUN_URL . "><span>" . $result->FUN_NOMBRE . "</span></a></div>";
        }

        return @$html;
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA EL MENU
     * INICIAL DE LA APLICACION, ICONOS
     * QUE PERMITEN INGRESAR A LOS DISTINTOS
     * APLICATIVOS SUF, SDM, SAPprueba
     * @param type $id_usr
     * @return string
     */
    function getMenuInicio($id_usr) {
        /*
          $this->USU_ID_USUARIO = $id_usr;
          $this->db->binds = array(':P_USU_ID_USUARIO' => $id_usr);
          $this->db->sql_sp = "call USP_GET_MENU(:rc,:P_USU_ID_USUARIO)";
          $roles = $this->db->loadObjectListSP();

          $count_rol = 0;
          $html .= "<ul id=\"nav\">";
          foreach ($roles as $rol) {
          if ($count_rol == 0 || $count_rol == 1) {
          $html .= "&nbsp;&nbsp;&nbsp;<a href=\"" . $rol->FUN_URL_COMPONENTE . "?r=" . $rol->FUN_ID_COMPONENTE . "\"><img src='" . $rol->FUN_URL_IMG . "'/>" . $rol->FUN_COMPONENTE . "</a></li>";
          }
          }
          $html .= "</ul>";

          return $html;
         * 
         */
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA LOS SUBMENU ASOCIADOS 
     * A UN PERFIL DE USUARIO EXISTENTE EN EL
     * SISTEMA
     * @param type $id
     * @return string
     */
    function getSubMenu($id) {
        /*

          $this->db->binds = array('P_FUN_ID_ROL' => $id);
          $this->db->sql_sp = "call USP_OBTENER_MODULO(:rc, :P_FUN_ID_ROL)";
          $funciones = $this->db->loadObjectListSP();
          $html .= "<div id=\"nav\">";
          $html .= "<ul>";
          foreach ($funciones as $funcion) {
          $html .= "<li><a href=\"" . $funcion->FUN_URL_MODULO . "?m=" . $funcion->FUN_ID_MODULO . "\"><span>" . $funcion->FUN_MODULO . "</span></a></li>";
          }
          $html .= "</ul>";
          $html .= "</div>";
          return $html;
         * 
         */
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA LOS SUBMENU ASOCIADOS
     * A UN PERFIL DE USUARIO EXISTENTE EN EL
     * SISTEMA
     * @param type $id
     * @return string
     */
    function obtenerFunciones($id) {

        /*
          $this->db->binds = array('P_FUN_ID_MODULO' => $id);
          $this->db->sql_sp = "call USP_OBTENER_FUNCIONES(:rc, :P_FUN_ID_MODULO)";
          $funciones = $this->db->loadObjectListSP();

          foreach ($funciones as $funcion) {
          $html .= "<li><a href=\"" . $funcion->FUN_URL_FUNCION . "?r=" . $funcion->FUN_ID_FUNCION . "\"><span>" . $funcion->FUN_FUNCION . "</span></a></li>";
          }
          return $html;
         * 
         */
    }

    //metodo que obtiene los reloes del usuario
    function obtenerRolesString($c_usuario) {

        /*
          $this->db->binds = array(':c_usuario' => $c_usuario);
          $this->db->sql = "SELECT * FROM SIIS.ADMIN_TROLES WHERE C_ROL in (SELECT R.C_ROL FROM ADMIN_ROL_USUARIO UR, ADMIN_TROLES R WHERE  R.C_ROL IN (1,100,101,102,103,104) AND UR.C_ROL=R.C_ROL AND UR.C_USUARIO = :c_usuario) ";

          $datos = $this->db->loadObjectList();
          $id_rol = array();

          foreach ($datos as $d) {
          array_push($id_rol, $d->C_ROL);
          }

          $id_rol_aux = "";
          $aux = count($id_rol);
          $i = 0;

          while ($i < $aux) {
          if ($id_rol_aux != "")
          $id_rol_aux .= ",";
          $id_rol_aux .= $id_rol[$i];
          $i++;
          }
          return $id_rol_aux;
         * 
         */
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA EL LISTADO DE USUARIOS REGISTRADOS EN EL SISTEMA
     * @return $lst_usr
     */
    function listarUsuarios() {

        $query = "SELECT USU_ID, 
                        USU_RUT,
                        USU_DV,
                        USU_USUARIO,
                        USU_NOMBRES,
                        USU_AP_PATERNO,
                        USU_AP_MATERNO,
                        USU_ESTADO
                FROM BOD_USUARIOS";

        $result = mysql_query($query);

        if (!$result) {
            die('Consulta no válida: ' . mysql_error());
        }

        $data = array();
        while ($rows = mysql_fetch_object($result)) {
            $data[] = $rows;
        }
        return $data;
    }

    /**
     * DAVID VALLEJOS A - 04.01.2013
     * METODO QUE REALIZA INSERT DE NUEVO
     * USUARIO DE SISTEMA EN EL SISTEMA
     * O REALIZA UPDATE DE USUARIO 
     * EXISTENTE
     */
    function save() {

        //reemplazar por esta query
        /*
INSERT INTO BOD_USUARIOS (USU_ID,
						  EMP_ID,
						  USU_USUARIO,
						  USU_PASSWORD,
						  USU_RUT,
						  USU_DV,
						  USU_NOMBRES,
						  USU_AP_PATERNO,
						  USU_AP_MATERNO,
						  USU_REGION,
						  USU_PROVINCIA,
						  USU_COMUNA,
						  USU_DIRECCION,
						  USU_TELEFONO,
						  USU_EMAIL,
						  USU_FECHA_CREACION,
						  USU_USR_CREACION, 
						  USU_FECHA_MODIFICACION,
						  USU_USR_MODIFICACION,
						  USU_ESTADO)
                            VALUES();
         *          */
        
        $this->db->sql = "INSERT INTO BOD_USUARIOS
                                (USU_ID,
                                EMP_ID,
                                USU_USUARIO,
                                USU_PASSWORD,
                                USU_RUT,
                                USU_DV,
                                USU_NOMBRES,
                                USU_AP_PATERNO,
                                USU_AP_MATERNO,
                                USU_REGION,
                                USU_PROVINCIA,
                                USU_COMUNA,
                                USU_DIRECCION,
                                USU_TELEFONO,
                                USU_EMAIL,
                                USU_FECHA_CREACION,
                                USU_USR_CREACION,
                                USU_FECHA_MODIFICACION,
                                USU_USR_MODIFICACION,
                                USU_ESTADO)
                        VALUES (" . $this->USU_ID . ",
                                " . $this->EMP_ID . ",
                                " . $this->USU_USUARIO . ",
                                " . $this->USU_PASSWORD . ",
                                " . $this->USU_RUT . ",
                                " . $this->USU_DV . ",
                                " . $this->USU_NOMBRES . ",
                                " . $this->USU_AP_PATERNO . ",
                                " . $this->USU_AP_MATERNO . ",
                                " . $this->USU_REGION . ",
                                " . $this->USU_PROVINCIA . ",
                                " . $this->USU_COMUNA . ",
                                " . $this->USU_DIRECCION . ",
                                " . $this->USU_TELEFONO . ",
                                " . $this->USU_EMAIL . ",
                                SYSDATE(),
                                " . $this->USU_ID . ",
                                ,
                                ,
                                1)";

        /*

          if ($this->USU_ID_USUARIO < 1) {

          $this->db->binds = array(':P_USU_ID_USUARIO' => $this->USU_ID_USUARIO,
          ':P_USU_PER_ID' => $this->USU_PER_ID,
          ':P_USU_USUARIO' => $this->USU_USUARIO,
          ':P_USU_CLAVE' => $this->USU_CLAVE,
          ':P_USU_RUT' => $this->USU_RUT,
          ':P_USU_DV' => $this->USU_DV,
          ':P_USU_NOMBRES' => $this->USU_NOMBRES,
          ':P_USU_AP_PATERNO' => $this->USU_AP_PATERNO,
          ':P_USU_AP_MATERNO' => $this->USU_AP_MATERNO,
          ':P_USU_ID_REGION' => $this->USU_ID_REGION,
          ':P_USU_ID_PROVINCIA' => $this->USU_ID_PROVINCIA,
          ':P_USU_ID_COMUNA' => $this->USU_ID_COMUNA,
          ':P_USU_FONO' => $this->USU_FONO,
          ':P_USU_EMAIL' => $this->USU_EMAIL,
          ':P_USU_USR_CREACION' => $_SESSION['USU_ID_USUARIO'],
          ':P_USU_USR_MODIFICACION' => " ");
          } else {
          $this->db->binds = array(':P_USU_ID_USUARIO' => $this->USU_ID_USUARIO,
          ':P_USU_PER_ID' => $this->USU_PER_ID,
          ':P_USU_USUARIO' => $this->USU_USUARIO,
          ':P_USU_CLAVE' => $this->USU_CLAVE,
          ':P_USU_RUT' => $this->USU_RUT,
          ':P_USU_DV' => $this->USU_DV,
          ':P_USU_NOMBRES' => $this->USU_NOMBRES,
          ':P_USU_AP_PATERNO' => $this->USU_AP_PATERNO,
          ':P_USU_AP_MATERNO' => $this->USU_AP_MATERNO,
          ':P_USU_ID_REGION' => $this->USU_ID_REGION,
          ':P_USU_ID_PROVINCIA' => $this->USU_ID_PROVINCIA,
          ':P_USU_ID_COMUNA' => $this->USU_ID_COMUNA,
          ':P_USU_FONO' => $this->USU_FONO,
          ':P_USU_EMAIL' => $this->USU_EMAIL,
          ':P_USU_USR_CREACION' => " ",
          ':P_USU_USR_MODIFICACION' => $_SESSION['USU_ID_USUARIO']);
          }

          $this->db->sql_sp = "call USP_GRABAR_USUARIOS(':P_USU_ID_USUARIO',
          ':P_USU_PER_ID',
          ':P_USU_USUARIO',
          ':P_USU_CLAVE',
          ':P_USU_RUT',
          ':P_USU_DV',
          ':P_USU_NOMBRES',
          ':P_USU_AP_PATERNO',
          ':P_USU_AP_MATERNO',
          ':P_USU_ID_REGION',
          ':P_USU_ID_PROVINCIA',
          ':P_USU_ID_COMUNA',
          ':P_USU_FONO',
          ':P_USU_EMAIL',
          ':P_USU_ESTADO',
          ':P_USU_USR_CREACION',
          ':P_USU_USR_MODIFICACION')";

          if ($this->db->alter()) {
          return $this->USU_ID_USUARIO;
          } else {
          return 0;
          }
         * 
         */
    }

    /**
     * 03.01.2014
     * METODO QUE ACTIVA O DESACTIVA
     * UNA CUENTA DE USUARIO EN EL
     * SISTEMA
     * @param type $id
     * @param type $estado
     * @return int
     */
    function desactivar($id, $estado) {

        $this->db = DB::getInstance();
        $this->USU_ESTADO = $estado;
        $this->USU_ID = $id;

        $this->db->sql = "UPDATE BOD_USUARIOS
                         SET USU_ESTADO = " . $this->USU_ESTADO . "
                        where USU_ID =" . $this->USU_ID;

        if ($this->db->alter($this->db->sql)) {
            return 1;
        } else {
            $this->error = $db->error;
            return -1;
        }
    }

    function existe($usuario, $clave) {

        /*
          $this->db->binds = array(':usuario' => $usuario, ':clave' => $clave);

          $this->db->sql = "select COUNT(1) AS EXISTE from ADMIN_USUARIO where ACTIVO='S' AND USUARIO = :usuario AND CLAVE = :clave";
          if ($persona = $this->db->loadObject()) {
          return $persona->EXISTE;
          } else {
          sleep(1);
          return null;
          }
         * 
         */
    }
}
?>